CI/CD ASP .NET
Changer la BD
- Nous utiliserons SQLite pour le déploiement
- C'est n'est pas particulièrement bon, mais ça nous permet de garder l'hébergement gratuit!
- Vous devrez ajouter la dépendance à Microsoft.EntityFrameworkCore.Sqlite
builder.Services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseLazyLoadingProxies();
// Ajouter Microsoft.EntityFrameworkCore.Sqlite
options.UseSqlite(connectionString);
});
- Ajuster maintenant appsettings.json
- La connection string pour SQLite est très simple
"ConnectionStrings": {
"DefaultConnection": "DataSource=app.db;Cache=Shared"
},
- Comme c'est une technologie de BD différente, la syntaxe n'est pas exactement la même et les migrations ne sont pas compatibles entre les deux!
attention
Il faut également refaire les migrations!
info
Comme ce n'est pas trop intéressant de travailler avec SQLite, c'est probablement une bonne idée de vous créer une branche pour le déploiement, disons "prod". Et de faire le changement de BD dans cette branche là et continuer d'utiliser MS SQL dans vos autres branches.
Déployer sur Azure
-
Aller sur le portail Azure: https://portal.azure.com/#home
-
Choisir App Services
- Créer une application web
Configuration de base
- S'assurer de choisir la bonne pile d'exécution (.net 7 probablement)
- S'assurer de garder le plan de tarification gratuit!
Configuration du déploiement
- Cliquer pour activer le déploiement continu
- Choisir le repo du projet asp.net
Valider et créer
- La configuration est terminée, on peut créer notre application
Paramètres de l'app
- Retourner à l'accueil
- Cliquer sur votre application web
Activer les messages d'erreurs
- Nous allons activer le mode développement pour être en mesure de voir les problème qui surviennent
- Aller dans Variables d'environment et faites "Ajouter"
- Inscrire ASPNETCORE_ENVIRONMENT comme nom de paramètre
- Inscrire Development comme valeur
- Valider les changements
![image]((image-9.png) |
---|
Appliquer les migrations
Pour des raisons de sécurité, le fichier de BD que l'on a dans notre projet n'est pas directement utilisable sur le serveur déployé. Pour régler le problème, on va s'ajouter une page MVC pour l'admin qui va nous permettre d'appliquer les migrations.
Note: Il y a déjà un exemple (ToolsController) dans le projet BackgroundService, dans la branche solutionSQLite
public async Task<IActionResult> Index()
{
List<string> result = (await _context.Database.GetPendingMigrationsAsync()).ToList();
this.ViewData["pendingmigrations"] = result;
return View();
}
[HttpGet]
public IActionResult ApplyMigrations()
{
_context.Database.Migrate();
return RedirectToAction(nameof(Index));
}
Configurer les CORS
- Activer Access-Control-Allow-Credentials
- Ajouter l'adresse de votre application Angular
- Enregistrer le tout